<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="padding:10px;">
<p>说明：
    <span>使用多线程,是否使用系统的默认规范、标准及工具类? 禁止for循环中new 线程 (待)</span>
</p>
<br/>
<p>正例：</p>
<div style="margin:10px;padding:10px;border:1px solid #000000;white-space: pre-line;">
 <br/>   //1.默认使用ThreadUtil工具类的ThreadUtil.execAsync()方法
 <br/>   ThreadUtil.execute(() -&gt; {
 <br/>   this.pushMessageToApp(recMsgId, empInfoList, recMsgTemplate);
 <br/>   });
<br/>
 <br/>   //2. 如果需要使用线程池，则使用该方式创建，这样在监控的时候就可以可知道具体的业务类，
 <br/>   // 这里的使用的时候必须要跟上级反馈评估，目前只有考勤，薪资是需要按这种方式处理
 <br/>   ThreadPoolExecutor threadPoolExecutor = DongBaoThreadUtil.newExecutorByBlockingCoefficient(0.6F,IAttWorkHourMonthService.class.getName());
</div>
<br/>
<p>反例：</p>
<div style="margin:10px;padding:10px;border:1px solid #000000;white-space: pre-line;">
 <br/>   public abstract class AbsSyncStaffJob{
 <br/>       protected final Executor executor = Executors.newFixedThreadPool(Math.min(100, 50),
 <br/>           new ThreadFactory() {
 <br/>               public Thread newThread(Runnable r) {
 <br/>               Thread t = new Thread(r);
 <br/>               t.setDaemon(true);//使用守护线程，这种方式不会阻止程序的关停
 <br/>               return t;
 <br/>           }
 <br/>       });
 <br/>   }
<br/>
 <br/>   //在使用的地方NEW这个类，这样每次都会创建一个固定的线程池
 <br/>   new DingtalkSyncJob(new AbsSyncStaffJob.SyncAppInfo(v.getLabel(),v.getAppId(),v.getAppSecret(),items.get(0).getAgentSecrect()),networkConfig).run();
<br/>
</div>
</body>
</html>